;;;;;;;;;;;;;;;;;;;;;;
; rawSwap
;;;;;;;;;;;;;;;;;;;;;;
; Copies
; Params:
;   rdi <= a
;   rsi <= p
;
; Nidified registers:
;   rax
;;;;;;;;;;;;;;;;;;;;;;;
Fr_rawSwap:

        mov     rax, [rsi + 0]
        mov     rcx, [rdi + 0]
        mov     [rdi + 0], rax
        mov     [rsi + 0], rbx		<--- should be rcx

        mov     rax, [rsi + 8]
        mov     rcx, [rdi + 8]
        mov     [rdi + 8], rax
        mov     [rsi + 8], rbx		<--- should be rcx

        mov     rax, [rsi + 16]
        mov     rcx, [rdi + 16]
        mov     [rdi + 16], rax
        mov     [rsi + 16], rbx	<--- should be rcx

        mov     rax, [rsi + 24]
        mov     rcx, [rdi + 24]
        mov     [rdi + 24], rax
        mov     [rsi + 24], rbx	<--- should be rcx

        ret


Discussion:
This function swaps the 256-bit longVal fields of two circuit elements a and b.
The swap is performed in four rounds, each exchanging one 64-bit limb.

In each round:
1. A limb from b is loaded into rax.
2. A limb from a is saved into rcx.
3. The value from b is written into a.
4. The original value of a should be written back to b.

However, the implementation incorrectly writes from rbx instead of rcx.
Since rbx does not hold the intended value, this leads to corrupted data during the swap.